package leetcode.primary.array;

/**
 * TODO 力扣 打家劫舍，你是一个专业的小偷，计划偷窃沿街的房屋。每间房内都藏有一定的现金，
 * 影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统，如果两间相邻的房屋在同一晚上被小偷闯入，系统会自动报警。
 * 给定一个代表每个房屋存放金额的非负整数数组，计算你 不触动警报装置的情况下 ，一夜之内能够偷窃到的最高金额。
 *
 * @author david
 * @version 1.0
 * @date 2021/4/26 15:40
 */
public class Rob {
    public static void main(String[] args) {
        int[] numbs = {2, 7, 9, 3, 1};//{2,1,1,2}
        System.out.println(rob(numbs));
    }

    /**
     * 动态规划解法
     *
     * @param numbs
     * @return
     */
    static int rob(int[] numbs) {
        //判断边界值
        if (numbs == null || numbs.length == 0) {
            return 0;
        }
        int noRob = 0;//第一家没偷
        int isRob = numbs[0];//第一家偷了
        for (int i = 1; i < numbs.length; i++) {
            int temp = Math.max(noRob, isRob);
            isRob = noRob + numbs[i];
            noRob = temp;
        }
        return Math.max(noRob, isRob);
    }
}
